package com.ruoyi.service.impl;

import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.SecurityUtils;
import com.ruoyi.domain.BasisCaseLoadingTask;
import com.ruoyi.mapper.BasisCaseLoadingTaskMapper;
import com.ruoyi.service.IBasisCaseLoadingTaskService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * 案例关联的任务Service业务层处理
 * 
 * @author wangzebing
 * @date 2025-05-14
 */
@Service
public class BasisCaseLoadingTaskServiceImpl implements IBasisCaseLoadingTaskService
{
    @Autowired
    private BasisCaseLoadingTaskMapper basisCaseLoadingTaskMapper;

    /**
     * 查询案例关联的任务
     * 
     * @param taskId 案例关联的任务主键
     * @return 案例关联的任务
     */
    @Override
    public BasisCaseLoadingTask selectBasisCaseLoadingTaskByTaskId(String taskId)
    {
        return basisCaseLoadingTaskMapper.selectBasisCaseLoadingTaskByTaskId(taskId);
    }

    /**
     * 查询案例关联的任务列表
     * 
     * @param basisCaseLoadingTask 案例关联的任务
     * @return 案例关联的任务
     */
    @Override
    public List<BasisCaseLoadingTask> selectBasisCaseLoadingTaskList(BasisCaseLoadingTask basisCaseLoadingTask)
    {
        return basisCaseLoadingTaskMapper.selectBasisCaseLoadingTaskList(basisCaseLoadingTask);
    }

    /**
     * 新增案例关联的任务
     * 
     * @param basisCaseLoadingTask 案例关联的任务
     * @return 结果
     */
    @Override
    public int insertBasisCaseLoadingTask(BasisCaseLoadingTask basisCaseLoadingTask)
    {

        SysUser user = SecurityUtils.getLoginUser().getUser();
        basisCaseLoadingTask.setUserId(user.getUserId());
        basisCaseLoadingTask.setCreateTime(DateUtils.getNowDate());
        return basisCaseLoadingTaskMapper.insertBasisCaseLoadingTask(basisCaseLoadingTask);
    }

    /**
     * 修改案例关联的任务
     * 
     * @param basisCaseLoadingTask 案例关联的任务
     * @return 结果
     */
    @Override
    public int updateBasisCaseLoadingTask(BasisCaseLoadingTask basisCaseLoadingTask)
    {
        return basisCaseLoadingTaskMapper.updateBasisCaseLoadingTask(basisCaseLoadingTask);
    }

    /**
     * 批量删除案例关联的任务
     * 
     * @param taskIds 需要删除的案例关联的任务主键
     * @return 结果
     */
    @Override
    public int deleteBasisCaseLoadingTaskByTaskIds(String[] taskIds)
    {
        return basisCaseLoadingTaskMapper.deleteBasisCaseLoadingTaskByTaskIds(taskIds);
    }

    /**
     * 删除案例关联的任务信息
     * 
     * @param taskId 案例关联的任务主键
     * @return 结果
     */
    @Override
    public int deleteBasisCaseLoadingTaskByTaskId(String taskId)
    {
        return basisCaseLoadingTaskMapper.deleteBasisCaseLoadingTaskByTaskId(taskId);
    }

    @Override
    public boolean updateTaskStatus(String loadingId) {
        return basisCaseLoadingTaskMapper.updateTaskStatus(loadingId);
    }

    @Override
    public List<Map<String, Object>> queryCaseList(Long uid){
        return basisCaseLoadingTaskMapper.queryCaseList(uid);
    }

    public List<BasisCaseLoadingTask> queryTaskList(BasisCaseLoadingTask basisCaseLoadingTask){
        return basisCaseLoadingTaskMapper.queryTaskList(basisCaseLoadingTask);
    }

    @Override
    public List<Map<String, Object>> queryCaseListForS(Long uid) {
        return basisCaseLoadingTaskMapper.queryCaseListForS(uid);
    }

    @Override
    public List<BasisCaseLoadingTask> queryTaskListForS(BasisCaseLoadingTask basisCaseLoadingTask) {
        return basisCaseLoadingTaskMapper.queryTaskListForS(basisCaseLoadingTask);
    }

    @Override
    public boolean issuedTask(String loadingId, String taskId) {
        return basisCaseLoadingTaskMapper.issuedTask(loadingId, taskId);
    }

    @Override
    public List<BasisCaseLoadingTask> queryTaskListFrom(String loadingId, String positionId, String equipmentId, String uavId) {
        return basisCaseLoadingTaskMapper.queryTaskListFrom(loadingId, positionId, equipmentId, uavId);
    }

    @Override
    public R updateByPushId(String taskId) {
        int flag = basisCaseLoadingTaskMapper.updateByPushId(taskId);
        if (flag>0){
            return R.ok();
        }else{
            return R.fail();
        }
    }
    @Override
    public List<BasisCaseLoadingTask> queryUTaskList (Long uid){
        return basisCaseLoadingTaskMapper.queryUTaskList(uid);
    }

    @Override
    public BasisCaseLoadingTask findByLoadingIdAndUserIdFormloadingTaskCurrectStatus(String loadingId, Long userId) {
        return basisCaseLoadingTaskMapper.findByLoadingIdAndUserIdFormloadingTaskCurrectStatus(loadingId, userId);
    }

    @Override
    public int updateUserTaskStatus(String chooseCaseId, String taskId, int newValue, long userid) {
        return basisCaseLoadingTaskMapper.updateUserTaskStatus(chooseCaseId, taskId,newValue,userid);
    }


}
